package com.pkk.components.util.enums;


import cn.hutool.core.util.ObjectUtil;

/**
 * 枚举帮助类
 */
public final class EnumReader {

  /**
   * 根据code查找枚举值
   *
   * @param clazz 枚举类的实例
   * @param key 待查找的key
   * @param <K> Key的类型，一般是Int或String
   * @param <E> 具体s的枚举类
   * @Return 枚举值
   *//*
  public static <K, E extends CodeEnum<K>> E getEnumByCode(Class<E> clazz, K key) {
    if (key == null) {
      return null;
    }

    if (!Enum.class.isAssignableFrom(clazz)) {
      return null;
    }
    E[] enumConstants = clazz.getEnumConstants();//all enums constants
    if (enumConstants != null) {
      for (E e : enumConstants) {
        if (ObjectUtil.equal(e.getCode(), key)) {
          return e;
        }
      }
    }
    return null;
  }

  *//**
   * 根据Desc获取enum
   *
   * @param clazz 枚举类的实例
   * @param desc 待查找的desc
   * @param <K> Key的类型，一般是Int或String
   * @param <E> 具体s的枚举类
   * @Return 枚举值
   *//*
  public static <K, E extends CodedEnum<K>> E getEnumByDesc(Class<E> clazz, String desc) {
    if (desc == null) {
      return null;
    }

    if (!Enum.class.isAssignableFrom(clazz)) {
      return null;
    }
    //all enums constants
    E[] enumConstants = clazz.getEnumConstants();
    if (enumConstants != null) {
      for (E e : enumConstants) {
        if (ObjectUtil.equal(e.getDesc(), desc)) {
          return e;
        }
      }
    }
    return null;
  }

  public static String getAll(Class<? extends CodedEnum> clazz) {
    StringBuilder builder = new StringBuilder();
    CodedEnum[] codedEnumConstants = clazz.getEnumConstants();
    if (null != codedEnumConstants && codedEnumConstants.length > 0) {
      for (int i = 0; i < codedEnumConstants.length; i++) {
        CodedEnum e = codedEnumConstants[i];
        builder.append(e.getCode()).append(":").append(e.getDesc());
        if (i != codedEnumConstants.length - 1) {
          builder.append(",");
        }
      }
    }
    return builder.toString();
  }*/
}
